package com.uzai.console.service.main.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.common.exception.BusinessException;
import com.uzai.common.result.ResponseCode;
import com.uzai.console.common.ResponseMsg;
import com.uzai.console.dto.main.updatelog.UpdateLogIdDto;
import com.uzai.console.dto.main.updatelog.UpdateLogQuery;
import com.uzai.console.entity.UpdateLog;
import com.uzai.console.mapper.UpdateLogMapper;
import com.uzai.console.service.main.UpdateLogService;
import com.uzai.console.vo.main.updatelog.UpdateLogInfoVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @author liuqi
 * @date 2021年08月25日 20:18
 */
@Service
public class UpdateLogServiceImpl implements UpdateLogService {

    @Autowired
    private UpdateLogMapper noticeMapper;

    /***
     * 查询更新日记列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param noticeQuery
     * @return null
     */
    public Page<UpdateLogInfoVo> findUpdateLogList(UpdateLogQuery noticeQuery){
        //新建返回到页面的LIST对象
        List<UpdateLogInfoVo> noticeInfoVoList = new ArrayList<>();
        //执行分页查询对象
        Page<UpdateLog> page = new Page<>();
        noticeQuery.convert(page);
        ArrayList<UpdateLog> noticeList =  noticeMapper.findByList(page, noticeQuery);
        if(noticeList != null && noticeList.size() > 0){
            for (UpdateLog notice : noticeList){
                UpdateLogInfoVo noticeInfoVo = new UpdateLogInfoVo();
                BeanUtils.copyProperties(notice, noticeInfoVo);
                noticeInfoVoList.add(noticeInfoVo);
            }
        }
        //返回到页面分页对象
        Page<UpdateLogInfoVo> pageVo = new Page<>();
        BeanUtils.copyProperties(page, pageVo);
        pageVo.setRecords(noticeInfoVoList);
        //将分页信息复制到返回到页面的分页MO当中
        return pageVo;
    }

    /**
     * 查询更新日记详情
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param noticeIdDto
     * @return null
     */
    public UpdateLogInfoVo findUpdateLogInfo(UpdateLogIdDto noticeIdDto){

        UpdateLogInfoVo noticeInfoVo = new UpdateLogInfoVo();

        if(noticeIdDto.getId() == null){
            throw  new BusinessException(ResponseCode.BUSINESS_EXCEPTION, ResponseMsg.PARAM_ERROR);
        }

        UpdateLog notice = noticeMapper.selectById(noticeIdDto.getId());

        if(notice == null){
            throw  new BusinessException(ResponseCode.BUSINESS_EXCEPTION, "该公告不存在");
        }

        BeanUtils.copyProperties(notice, noticeInfoVo);

        return noticeInfoVo;
    }


}
